home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / systems / mint / ksh / pushd.ksh < prev    next >
Text File  |  1995-11-25  |  1KB  |  59 lines

  1. # You will find appended a small shell script that defines under a stock
  2. # System V Bourne shell the pushd, popd, dirs commands of csh(1). They are
  3. # trivially adapted to the Korn shell. I have taken care to make them as
  4. # robust as possible.
  5. # Piercarlo Grandi
  6.  
  7. # changed `pwd` to $PWD since ksh maintains $PWD
  8. # removed $HOME references since ksh groks ~
  9. # GGP.
  10.  
  11. DIRS=''
  12.  
  13. # We do a few contortions to ensure correct behaviour
  14. # if directory pathnames contain spaces et similia.
  15.  
  16. pushd()
  17. {
  18.     CWD="$PWD"
  19.  
  20.     case "$1" in
  21.     '')    case "$DIRS" in
  22.         '') echo "directory stack empty"; return 1;;
  23.         esac
  24.         set $DIRS; eval cd "$1"; >/dev/null || return 1
  25.         shift; DIRS="'$CWD' $@"; pwd;;
  26.  
  27.     *)    cd "$1" || return 1
  28.         DIRS="'$CWD' $DIRS";;
  29.     esac
  30.     return 0
  31. }
  32.  
  33. popd()
  34. {
  35.     case "$DIRS" in
  36.     '') echo "directory stack empty"; return 1;;
  37.     esac
  38.     set $DIRS; eval cd "$1"
  39.     shift; DIRS="$*"; pwd
  40.     return 0
  41. }
  42.  
  43. dirs()
  44. {
  45.     CWD="$PWD" || return 1
  46.     eval echo "'$CWD' $DIRS"
  47.     return 0
  48. }
  49.  
  50. alias d+=pushd
  51. alias d-=popd
  52.  
  53. # Piercarlo "Peter" Grandi                | ARPA: pcg%uk.ac.aber.cs@nsfnet-relay.ac.uk
  54. # Dept of CS, UCW Aberystwyth            | UUCP: ...!mcsun!ukc!aber-cs!pcg
  55. # Penglais, Aberystwyth SY23 3BZ, UK    | INET: pcg@cs.aber.ac.uk
  56.  
  57. # I kept PG's signoff since these were his idea and I like them - if they break
  58. # for you it's most likely my fault, don't blame him. GGP.
  59.